package com.corpdata.system.log;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 *	操作日志注解
 *	aop通过该注解进行切入 然后读取线程变量中的日志对象进行插入
 *	插入时机：方法执行完,返回返回值之前
 *	使用方法：
 *		在想要产生日志的方法上增加该注解
 *		通过对auto属性是否为false来决定是否进行读取注解内容
 * @author 80511
 */
@Documented
@Retention(RUNTIME)
@Target(METHOD)
public @interface OptLog {
	
	/**
	 * 	默认开启注解读取
	 * true:自动通过注解中的内容进行封装 插入
	 * false: 不进行自动封装 需要向OptLogConstant.OPT_LOG 变量中写入日志对象
	 * 	如果有日志对象则只封装对象的基础信息
	 * 	基础信息包括：id optUser,ipAddress,created,referer,requestUrl
	 * @return
	 */
	boolean auto() default true;
	
	/**
	 *	模块
	 * @return
	 */
	String module() default "";
	
	/**
	 * 	操作详情
	 * @return
	 */
	String info() default "";
	
	/**
	 * 	备注
	 * @return
	 */
	String remark() default "";
}
